1  | 
  | 
有后门函数,且堆溢出
unlink函数模拟了 unlink的过程,可以结合堆溢出实现任意地址写。
一开始的想法是将 shell 函数地址写到栈的返回地址上去,不过直接写会破坏 shell 函数,且text段不可写,会crash
FD->bk=BK; BK->fd=FD;
会往shell+4 写入数据 ,导致crash
直接写不行,那就用栈迁移,调整好参数位置就行了
1  | #coding:utf-8  | 
1  | #include <stdio.h>  | 
有后门函数,且堆溢出
unlink函数模拟了 unlink的过程,可以结合堆溢出实现任意地址写。
一开始的想法是将 shell 函数地址写到栈的返回地址上去,不过直接写会破坏 shell 函数,且text段不可写,会crash
FD->bk=BK; BK->fd=FD;
会往shell+4 写入数据 ,导致crash
直接写不行,那就用栈迁移,调整好参数位置就行了
1  | #coding:utf-8  |